package cn.ljy.authority.dao.mapper;


import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 专门处理角色与权限的关系
 */
@Mapper
public interface SysRolePermissionMapper{
    /**
     * 根据权限信息读取出所有关联的角色数量
     * @param permissionId 权限id
     * @return 角色数量
     */
    @Select("select count(1) from sys_role_permission where permission_id=#{permissionId}")
    int countAllRoleByPermissionId(java.io.Serializable permissionId);

    /**
     * 根据角色信息读取出所有关联的权限数量
     * @param roleId 角色id
     * @return 权限数量
     */
    @Select("select count(1) from sys_role_permission where role_id=#{roleId}")
    int countAllPermissionByRoleId(java.io.Serializable roleId);

    /**
     * 删除该角色对应的角色和账户关系
     * @param roleIds 角色集合
     */
    int deleteByRoleIds(java.io.Serializable[] roleIds);

    /**
     * 删除该权限对应的角色关系
     * @param permisssionIds 权限集合
     */
    int deleteByPermissionIds(java.io.Serializable[] permisssionIds);

    /**
     * 将菜单批量赋给角色
     * @param roleId 指定角色
     * @param permissionIds 菜单集合不能为空
     */
    int saveByRoleIdAndPermissionIds(int roleId, long[] permissionIds);

    /**
     * 读取该角色拥有的所有权限id，可以用于提供给前端的树形菜单作为已选列表
     * @param roleId
     * @return
     */
    @Select(" select permission_id from sys_role_permission where role_id=#{roleId} for update")
    List<Long> getPermissionIdsByRoleId(Integer roleId);
}
